#ifndef frm_TPopup_H
#define frm_TPopup_H

#include "svl_TCommand.h"
#include "frm_control_TPanel.h"

namespace frm {

////////////////////////////////////////////////////////////////////////////////

struct TMenuSeparator : public svl::TCommand
{
  TMenuSeparator() : svl::TCommand("-") {}
};

////////////////////////////////////////////////////////////////////////////////

struct TPopupMenu : public TDebug
{
  static void Popup
  (
    control::TWindow   &Window,
    grf::TPoint         PtClient,
    svl::TCommandArray *NewItems,
    bool                EnDeleteNewItems = true
  );

private:
  struct THMenu : public svl::TArray_Object
  {
    ::HMENU HMenu; 
    //
    THMenu() { Create();}
   ~THMenu() { ::DestroyMenu(HMenu);}
    //
    void Create();
  };
  static void Load(svl::TArray &A,THMenu &HMenu,svl::TCommandArray &Items);
};

////////////////////////////////////////////////////////////////////////////////

struct TMainMenu : public TDebug
{
  svl::TCommandArray Items;
  //
  TMainMenu();
  //
  void SetToWindow(control::TWindow &Window);

private:
  struct THMenu : public svl::TArray_Object
  {
    ::HMENU HMenu; 
    //
    THMenu() { Create();}
   ~THMenu() { ::DestroyMenu(HMenu);}
    //
    void Clear() { ::DestroyMenu(HMenu); Create();} 
    void Create();
  };
  void Load(svl::TArray &A,THMenu &HMenu,svl::TCommandArray &Items);
  //
  THMenu menu;
  svl::TArray a;
  svl_Except;
};

////////////////////////////////////////////////////////////////////////////////
}

#endif
